23.Excel95で実行できExcel97・2000で問題が出たケース

下記は自分でExcel95をExcel2000で実行した時の不具合ケ−スであるが、 その他を詳しく知りたい方は、Microsoft社の Excel95 と異なる VBA の動作に出ています。

23−1ブックを開けなかったケース
Excel97でエラー 動くように変更
ワークシートとマクロシートがあるファイルを
97で開こうとしたら(95では問題なし)、「この
プログラムは不正な処理を行ったので強制
終了されます」で、開けず何が問題か調べ
ようがなく困った。
(原因は、下記23-2項の97で実行出来ない
 ステ−トメントが含まれていた為)
 
 
 
調べ方:
[1]95でワークシートとマクロを分けてファイル
 
[2]97でマクロファイルを読み込む
 
[3]次にワークシートファイルを開き、[2]の
  ファイルへ[編集]→[シートの移動]で
 貼り付ける。
 
[3]マクロ実行でエラーが出るのでデバック


23−2ボタン名を取得出来なくなった
Excel97でエラー 動くように変更
nam = ActiveSheet.Buttons.Name
ActiveSheet.Buttons(nam).Select
Selection.Delete
 
「実行時エラー"438"オブジェクトは、この
プロパティまたはメソッドをサポートしてい
ますん」。のメッセージ
(95では1シ−トボタン1個の場合問題なし)
ActiveSheet.Buttons.Select
nam = Selection.Name
ActiveSheet.Buttons(nam).Select
Selection.Delete
 
ボタンをSelectし、選んだボタンの名前を
読み取る方法に変えエラー解消
 
 
nam = ActiveSheet.TextBoxes.Name
ActiveSheet.TextBoxes(nam).Select
Selection.Delete
(95では1シ−トTextBoxe1個の場合問題なし)
上と同様のメッセージが出る
 
ActiveSheet.TextBoxes.Select
nam = Selection.Name
ActiveSheet.TextBoxes(nam).Select
Selection.Delete
 
 
cnam = ActiveSheet.ChartObjects.Name
ActiveSheet.DrawingObjects(cnam).Select
ActiveSheet.ChartObjects(cnam).Activate
(95では1シ−トChart個の場合問題なし)
上と同様のメッセージが出る
 
ActiveSheet.ChartObjects.Select
cnam = Selection.Name
ActiveSheet.DrawingObjects(cnam).Select
ActiveSheet.ChartObjects(cnam).Activate
 


23−3Excel97で保存した場合参照にOLEが付く
Excel95でエラー 動くように変更
95と97で共通に使用するマクロにおいて
97で開いた後、「最新のExcelのファイル
形式に更新しますか」→「いいえ」で保存
しても、マクロの参照に[OLE Automation]
が自動的に付く。
OLEのアプリケ−ションが入っていないPC
でそのマクロを実行すると、95で問題なく
実行できたマクロが実行出来なくなる。
Excel95で再度マクロを開き[ツ−ル]→
[参照設定]で[OLE Automation]のマ−ク
を外す
 
 
 
 
 


23−4シ−ト名カタカナの半角全角の相違
Excel97でエラー 動くように変更
実際のシ−ト名は全角で「プロセス」なって
いたが、マクロでシ−トを指定する時
間違っては半角の「プロセス」にしてあった。
 
正: Sheets("プロセス").Select
誤: Sheets("プロセス").Select
 
Excel95では全角半角区別なく読み取り正常
に動作したが、97は下記エラ−でストップ
「実行時エラー"9"
インデックスが有効範囲にあるません」
 
マクロでシ−トを指定する時、実際のシ−ト
名に合わせ、全角カタカナに直しOK
 
 
 
 
 
 
 
 


23−5Excel97保存のマクロを95で実行する場合
Excel95でエラー 動くように変更
95と97で共通に使用するマクロにおいて
Excel97のVB Editorでマクロを修正し保存 
した場合は、そのマクロをExcel95で実行
しようとすると、
「実行時エラー"1004"
***.xls:ファイル形式が正しくありません」
のエラ−メッセジが出てストップ
 
(マクロは共有ステ−タス使用のケ−ス)
 
 
[1]97からマクロを開き、VB Editorに表示
 させ、そのマクロを全部コピ−する
[2]95を開き、挿入→マクロ→モジュ−ル
 でモジ−ルを追加する
[3]追加したモジ−ルへ[1]を貼付け
[4]名前を付けて保存で、実行出来なくなった
 ファイルへ上書きする
[5]必要に応じて非表示にする
 
(結論:共通で使用する場合は95でマクロ
 を編集した方がよい)


23−6マクロシート名カタカナの「マ」でエラー
Excel97でエラー 動くように変更
マクロシート名が半角の「マ」1文字の場合
95では問題ないが、97ではエラーとなる
 
メッセージは:
「&H8007005システムエラーです。
パラメータが正しくありません」
 
「マ」を「マク」又は「マ1」の2文字でOK
「マ」を他の文字「ア」に変えてもOKとなった
「マ」を英文字「M」に変えてもOKとなった
 
原因は判らないが結論:
Excel97と共通に使用するマクロシート名は
英文字にした方がよさそうだ


23−7セルの行数相違によるエラー
Excel97でエラー 動くように変更
Dim cen2 As Integer '最終セル2

Selection.End(xlDown).Select
cen2 = Mid(ActiveCell.Address, 4)

途中空白セルのある最終セル読み取りマク
ロ(例題:5-5(3)-1)でcen2の所でエラー
 
「実行時エラー"6"
オーバーフローしました」
Dim cen2 As Long '最終セル2
 
95の場合は最終が、"16384"でデータ型
が整数型で問題ないが、97は最終"65536"
ではオーバーフローしてしまうので、長整数
型に変えOK
 
 
 
 


23−8インプットボックス関数でセル指定出来ない
Excel97でエラー 動くように変更
fn = InputBox(msg, "フォルダー名")
 
Excel95では上記でマウスをクリックして
セルの指定(セルデ-タ入力)出来たが
97ではインプットボックス関数ではセル
指定不可となった。
fn = Application.InputBox(msg, "フォルダー名")
 
InputBoxメソッドに変更しすれは、セル指定で
入力出来ます。
 
 

23−9 97でマクロの入っている95ファイルを読めないケ−ス
Excel97でエラー 動くように変更
「DLL読み込み時のエラ−です」のメッセ−ジ
が出て、マクロの入っているExcel95ファイル
を開けない。(PCにExcel97をインソ−ルして
95ファイルを実行しようとした時、特定のPC
で発生)
(マクロの入っていないファイルは問題なし)
エラ−になるファイルをExcel97で開き95形式で
保存したら動くようになった。
 
(根本解決法が見つからないが、多分Excel関連
の旧アプりケ−ションを全て消去し再インソ−ル
で解決すると思われる:未確認)

23−10 97でマクロの入っているファイルを読めないケ−ス
Excel97でエラー 動くように変更
オリジナルメニュ−をウインドウズのアイコン
から開き実行した時、「このプログラムは不正
な処理を行ったので強制終了されます」の
メ−セ−ジで復旧。(Excel95では問題なし)
(オリジナルメニュ−をアイコンでなくExcel
より開いた場合はKO:特定のPCで発生)
メニュ−より開くマクロの入ったブックが非表示
になっており、表示に変更で動くようになった。
 
なお、Excel5.0からExcel95に変えた時非表示
にしたが、結論から言うとExcel97ではなぜか
表示にした方がよいケ−スがありそ-だ。



23−11 スペ−ス区切り.prnで保存時の問題点
(1)元のExcelファイル


(2)Excel95で保存 →文字抜けが起きる 


(3)Excel97で保存 → Excelと同じに保存でき問題なし


(4)Excel2000で保存 →文字が途中でカットされる



(5)セル幅を広くしたExcelファイル


(6)Excel95・97・2000とも問題なし





23―12 [']マ−クの処理方法相違によるエラー
Excel97でエラー 動くように変更
dat = iryo's homepage
Do
ssa = InStr(1, dat, "'", 1)
If ssa > 0 Then
dat = Mid(dat, 1, ssa - 1) & "’" & Mid(dat, ssa + 1)
End If
Loop Until ssa = 0
 
Excel95では全角の[’」になり問題なし。
 
Excel97・2000では全角[’」と半角の「'」区別無く
識別し上記は無限ル−プになる。
dat = iryo's homepage
Do
ssa = InStr(1, dat, "'")
If ssa > 0 Then
dat = Mid(dat, 1, ssa - 1) & "’" & Mid(dat, ssa + 1)
End If
Loop Until ssa = 0
 
InStr(1, dat, "'", 1)の1を取り全角半角を
区別するようにすればOK
Excel95では、['][’]は別な文字として扱って
いたが97/2000では大文字・小文字で扱う



目次へ戻る

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル